interface I {
  new (): I;
  constructor(): void;
}

interface G {
  new <T>(): G<T>;
}

type T = {
  constructor(): void;
};

class C {
  new(): C;
}

declare abstract class C {
  new(): C;
}

interface I {
  constructor(): '';
}

export declare class C {
  // 应该定义为constructor(): C
  public new(): C;
}

export interface I {
  // 不应该定义constructor
  constructor(): void;
}

declare class C {
  new(): C;
}